package ru.spb.nicetu.altx.mnemo.extpoint.model.typeConverter;

public interface IConverter<T> {

  /**
   * Приводит объект object к типу toClass
   * 
   * @param object
   *          - объект для преобразования
   * @param toClass
   *          - класс, к который необходимо привести object
   * @return экземпляр класса toClass или null, если преобразование не удалось
   */
  Object convert(T object, Class<?> toClass);

  /**
   * Приводит объект object к типу toClass, используя дополнительную информацию.<br/>
   * 
   * Например, при приведении "вектора" к "вектору ТМИ" информация об атрибутах
   * "A0", "A1" и Локальных коммутаторах невозможно получить из исходного
   * "вектора". Эту информацию можно получить из объекта additionalInfoObj
   * 
   * @param object
   *          - объект для преобразования
   * @param toClass
   *          - класс, к который необходимо привести object
   * @return экземпляр класса toClass или null, если преобразование не удалось
   */
  Object convert(T object, Class<?> toClass, Object additionInfoObj);
}
